/*
 * Graphic.h
 *
 *  Created on: Jan 29, 2013
 *      Author: quanpv
 */

#ifndef GRAPHIC_H_
#define GRAPHIC_H_

#include <iostream>
#include "Point.h"
#include "Event.h"

class Graphic {
public:
	virtual ~Graphic();

	virtual void Draw(const Point& at) = 0;
	virtual void HandleMouse(Event& event) = 0;

	virtual const Point& GetExtent() = 0;

	virtual void Load(std::istream& from) = 0;
	virtual void Save(std::ostream& to) = 0;

protected:
	Graphic();
};

#endif /* GRAPHIC_H_ */
